Skip to content

Conversation

@MajorLift
Copy link
Contributor

@MajorLift MajorLift commented Nov 3, 2025

Motivation

This commit enables React Compiler for Browserify builds, and for ESLint (via the react-compiler/react-compiler ruleset). We can expect long-term UI performance benefits and developer time savings from this change. The Compiler transparently adds memoization code for React components and hooks, among other optimizations, and enforces React best practices in new code.

Description

Because enabling React Compiler requires addressing all violations of the react-compiler/react-compiler rule, this commit contains a large number of formatting changes and renames that do not require close review, alongside refactors and logical changes that do.

I would suggest that reviewers primarily focus on whether a given change is problematic, rather than on whether it is necessary. If the motivation for any change is unclear, it's safe to assume that it fixes an error thrown in CI. The objective of this commit is to ship fixes that unblock React Compiler without introducing regressions in functionality or performance. Suggestions on implementing React best practices will be catalogued and addressed in follow-up PRs.

Open in GitHub Codespaces

Changelog

CHANGELOG entry: null (non-user facing but regressions possible)

Related issues

Manual testing steps

  1. Go to this page...

Screenshots/Recordings

Before

After

Pre-merge author checklist

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

Note

Enables React Compiler across builds and linting, updates policies/deps, and refactors UI/hooks/tests to meet compiler rules.

  • Build/Tooling:
    • Enable React Compiler via Babel (babel-plugin-react-compiler) with targeted ui sources and exclusions in babel.config.js.
    • Enforce react-compiler/react-compiler rule in ESLint for ui/**/*.js,ts,tsx; add eslint-plugin-react-compiler.
    • Add runtime and dev deps: react-compiler-runtime, babel-plugin-react-compiler, eslint-plugin-react-compiler; update .depcheckrc.yml.
    • Update LavaMoat policies (browserify/webpack/build-system) to allow new compiler/runtime and adjusted transitive deps.
  • UI/Code Refactors (compiler compliance):
    • Stabilize hooks: add useCallback/useMemo/useRef, correct useEffect deps/cleanups, replace inline debounced fns; add 'use no memo' where needed.
    • Safer patterns: replace instanceof Array with Array.isArray, optional chaining, guard undefined IDs, avoid mutating refs unsafely.
    • API changes:
      • Convert getIsEstimatedReturnLow to hook useGetIsEstimatedReturnLow and update call sites.
      • Rename selectors from use*Selector to get* variants (e.g., getUseSafeChainsListValidation, getUse4ByteResolution).
      • Allow ownerId?: string in confirm alerts; reducer ignores undefined ownerId.
    • Asset model: add type guards (isNativeAsset, isTokenAsset); adjust AssetPage to use updated asset data.
    • Misc fixes: keys for mapped components, component names, prop-types typings, test IDs, mask attribute comment.
  • Tests:
    • Update tests to use renderHook and new selector/hook names; minor mocks adjusted.

Written by Cursor Bugbot for commit 249d0ea. This will update automatically on new commits. Configure here.

@github-actions
Copy link
Contributor

github-actions bot commented Nov 3, 2025

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@metamaskbot metamaskbot added the team-extension-platform Extension Platform team label Nov 3, 2025
@socket-security
Copy link

socket-security bot commented Nov 3, 2025

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addedreact-compiler-runtime@​19.1.0-rc.31001007197100
Addedbabel-plugin-react-compiler@​19.1.0-rc.31001007797100
Updatedeslint-plugin-react@​7.30.1 ⏵ 7.37.59910010084100
Addedeslint-plugin-react-compiler@​19.1.0-rc.21001009293100
Updatedeslint-plugin-react-hooks@​4.6.0 ⏵ 5.2.0100100100 +796100

View full report

@socket-security
Copy link

socket-security bot commented Nov 3, 2025

All alerts resolved. Learn more about Socket for GitHub.

This PR previously contained dependency changes with security issues that have been resolved, removed, or ignored.

Ignoring alerts on:

View full report

@metamaskbot
Copy link
Collaborator

metamaskbot commented Nov 3, 2025

✨ Files requiring CODEOWNER review ✨

🔑 @MetaMask/accounts-engineers (2 files, +8 -8)
  • 📁 ui/
    • 📁 components/
      • 📁 app/
        • 📁 identity/
          • 📁 backup-and-sync-features-toggles/
            • 📄 backup-and-sync-features-toggles.tsx +8 -7
      • 📁 multichain/
        • 📁 account-list-item-menu/
          • 📄 account-list-item-menu.js +0 -1

👨‍🔧 @MetaMask/core-extension-ux (1 files, +0 -1)
  • 📁 ui/
    • 📁 components/
      • 📁 multichain/
        • 📁 account-list-item-menu/
          • 📄 account-list-item-menu.js +0 -1

🫰 @MetaMask/core-platform (1 files, +3 -0)
  • 📁 ui/
    • 📁 components/
      • 📁 app/
        • 📁 snaps/
          • 📁 snap-ui-renderer/
            • 📄 snap-ui-renderer.js +3 -0

🎨 @MetaMask/design-system-engineers (2 files, +4 -1)
  • 📁 ui/
    • 📁 components/
      • 📁 component-library/
        • 📁 select-wrapper/
          • 📄 select-wrapper.stories.tsx +2 -1
        • 📁 text-field/
          • 📄 text-field.tsx +2 -0

🧩 @MetaMask/extension-devs (8 files, +621 -301)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +46 -38
      • 📁 experimental/
        • 📄 policy.json +46 -38
      • 📁 flask/
        • 📄 policy.json +46 -38
      • 📁 main/
        • 📄 policy.json +46 -38
    • 📁 build-system/
      • 📄 policy-override.json +17 -1
      • 📄 policy.json +344 -72
    • 📁 webpack/
      • 📁 mv2/
        • 📄 policy.json +38 -38
      • 📁 mv3/
        • 📄 policy.json +38 -38

💎 @MetaMask/metamask-assets (2 files, +2 -4)
  • 📁 ui/
    • 📁 components/
      • 📁 app/
        • 📁 assets/
          • 📁 token-cell/
            • 📄 token-cell.test.tsx +2 -2
          • 📁 token-list/
            • 📄 token-list.tsx +0 -2

📜 @MetaMask/policy-reviewers (8 files, +621 -301)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +46 -38
      • 📁 experimental/
        • 📄 policy.json +46 -38
      • 📁 flask/
        • 📄 policy.json +46 -38
      • 📁 main/
        • 📄 policy.json +46 -38
    • 📁 build-system/
      • 📄 policy-override.json +17 -1
      • 📄 policy.json +344 -72
    • 📁 webpack/
      • 📁 mv2/
        • 📄 policy.json +38 -38
      • 📁 mv3/
        • 📄 policy.json +38 -38

Tip

Follow the policy review process outlined in the LavaMoat Policy Review Process doc before expecting an approval from Policy Reviewers.


🔗 @MetaMask/supply-chain (8 files, +621 -301)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +46 -38
      • 📁 experimental/
        • 📄 policy.json +46 -38
      • 📁 flask/
        • 📄 policy.json +46 -38
      • 📁 main/
        • 📄 policy.json +46 -38
    • 📁 build-system/
      • 📄 policy-override.json +17 -1
      • 📄 policy.json +344 -72
    • 📁 webpack/
      • 📁 mv2/
        • 📄 policy.json +38 -38
      • 📁 mv3/
        • 📄 policy.json +38 -38

@MajorLift MajorLift changed the base branch from main to jongsun/chore/251030-enable-rules-of-hooks November 3, 2025 19:48
@metamaskbot
Copy link
Collaborator

Builds ready [3eabf52]
UI Startup Metrics (1311 ± 102 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup13111129155710213891480
load112996813479412041293
domContentLoaded112296113389311991280
domInteractive2314128162151
firstPaint591101134544711231260
backgroundConnect2302192638235246
firstReactRender3120167163548
getState2185072433
initialActions61688617
loadScripts8987381112939701052
setupStore1072631115
numNetworkReqs1367921676
BrowserifyPower User HomeuiStartup20351747278138325552781
load1067914149821113611498
domContentLoaded1059907149021013471490
domInteractive271570174470
firstPaint59819713693749461369
backgroundConnect23621626916252269
firstReactRender27253122731
getState17715029032182290
initialActions51133513
loadScripts834684124120011001241
setupStore1392861228
numNetworkReqs15910331889308318
WebpackStandard HomeuiStartup8266851224948421075
load60454293480608846
domContentLoaded59653590876602820
domInteractive16114981438
firstPaint20855882212169819
backgroundConnect271279133061
firstReactRender28176283336
getState1262841418
initialActions3015349
loadScripts59353390075600812
setupStore1052131216
numNetworkReqs1467519872
WebpackPower User HomeuiStartup13321178194623515311946
load69359610171347801017
domContentLoaded669586916112745916
domInteractive251373205073
firstPaint36983980307619980
backgroundConnect761821472183214
firstReactRender28245982659
getState1396616326154163
initialActions31143514
loadScripts664584905109734905
setupStore96265926
numNetworkReqs1499828675271286
FirefoxBrowserifyStandard HomeuiStartup14771294197313415431743
load1265111316299413221440
domContentLoaded1265111316299413221440
domInteractive1213545460124231
firstPaint------
backgroundConnect4324135205283
firstReactRender26216462644
getState10419720826
initialActions41273312
loadScripts1240109316009013021414
setupStore1265571133
numNetworkReqs1266816761
BrowserifyPower User HomeuiStartup25952290331732928443317
load14731258190520416491905
domContentLoaded14731257190520416481905
domInteractive22796523159362523
firstPaint------
backgroundConnect742717845124178
firstReactRender433267105267
getState15010821034189210
initialActions11146153046
loadScripts14441231187520216231875
setupStore3871705048170
numNetworkReqs1397033599236335
WebpackStandard HomeuiStartup15991412210212716311918
load1365121116268713991541
domContentLoaded1365121116258713991540
domInteractive973023934112158
firstPaint------
backgroundConnect4622134205388
firstReactRender312274133072
getState84436916
initialActions51407417
loadScripts1337119416048313711502
setupStore177207231342
numNetworkReqs1367018767
WebpackPower User HomeuiStartup24872135314734228453147
load14481253179918316771799
domContentLoaded14471253179918316761799
domInteractive1227228866183288
firstPaint------
backgroundConnect1063125275213252
firstReactRender463192185892
getState1197317624134176
initialActions11263161163
loadScripts14121233174017216381740
setupStore3861043677104
numNetworkReqs13461338106240338
📊 Page Load Benchmark Results

Current Commit: 3eabf52 | Date: 11/3/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±64ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 737ms (±62ms) 🟢 | historical mean value: 726ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 78ms (±15ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 64ms 1.02s 1.37s 1.26s 1.37s
domContentLoaded 737ms 62ms 706ms 1.03s 940ms 1.03s
firstPaint 78ms 15ms 60ms 216ms 88ms 216ms
firstContentfulPaint 78ms 15ms 60ms 216ms 88ms 216ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 68 Bytes (0%)
  • ui: 497.07 KiB (7%)
  • common: 38.75 KiB (0.45%)

@MajorLift MajorLift marked this pull request as ready for review November 4, 2025 12:24
@MajorLift MajorLift requested review from a team as code owners November 4, 2025 12:24
@github-project-automation github-project-automation bot moved this to Needs dev review in PR review queue Nov 4, 2025
})`;

return ComponentWithRouterHooks;
return useComponentWithRouterHooks;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Misnamed Component Violates React Hook Naming Conventions

The useComponentWithRouterHooks function is named like a React hook but is actually a component. This violates React naming conventions and can confuse tools like React Compiler and linters.

Fix in Cursor Fix in Web

@MajorLift MajorLift added the needs-qa Label will automate into QA workspace label Nov 5, 2025
@metamaskbot
Copy link
Collaborator

Builds ready [d3453be]
📊 Page Load Benchmark Results

Current Commit: d3453be | Date: 11/19/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±48ms) 🟡 | historical mean value: 1.05s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 726ms (±66ms) 🟢 | historical mean value: 729ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 90ms (±131ms) 🟢 | historical mean value: 78ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 48ms 1.01s 1.41s 1.09s 1.41s
domContentLoaded 726ms 66ms 703ms 1.32s 758ms 1.32s
firstPaint 90ms 131ms 60ms 1.39s 88ms 1.39s
firstContentfulPaint 90ms 131ms 60ms 1.39s 88ms 1.39s
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 53 Bytes (0%)
  • ui: 669.23 KiB (9.58%)
  • common: 38.75 KiB (0.44%)

@MajorLift MajorLift marked this pull request as draft November 19, 2025 18:06
@MajorLift
Copy link
Contributor Author

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

Policies updated.
👀 Please review the diff for suspicious new powers.

🧠 Learn how: https://lavamoat.github.io/guides/policy-diff/#what-to-look-for-when-reviewing-a-policy-diff

@metamaskbot
Copy link
Collaborator

Builds ready [fae3b64]
UI Startup Metrics (1227 ± 101 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup12271072167110112851404
load105391614179311111216
domContentLoaded104691314119111031207
domInteractive231382152169
firstPaint56295143742110341217
backgroundConnect21419925110219235
firstReactRender29206283547
getState341689113951
initialActions103112
loadScripts838710118290898992
setupStore1173041221
numNetworkReqs1367419672
BrowserifyPower User HomeuiStartup21591595312131823452811
load1151906191321011961718
domContentLoaded1133892189920811691674
domInteractive45172934936179
firstPaint825148186346211531639
backgroundConnect27220334537302333
firstReactRender86501601792115
getState23015840760262364
initialActions104112
loadScripts88070516231968801413
setupStore211082112545
numNetworkReqs986719330105184
WebpackStandard HomeuiStartup------
load------
domContentLoaded------
domInteractive------
firstPaint------
backgroundConnect------
firstReactRender------
getState------
initialActions------
loadScripts------
setupStore------
numNetworkReqs------
WebpackPower User HomeuiStartup------
load------
domContentLoaded------
domInteractive------
firstPaint------
backgroundConnect------
firstReactRender------
getState------
initialActions------
loadScripts------
setupStore------
numNetworkReqs------
FirefoxBrowserifyStandard HomeuiStartup12071065153810212701413
load102491812327510791174
domContentLoaded102391812327610791174
domInteractive56321873479130
firstPaint------
backgroundConnect332274123669
firstReactRender24184972344
getState106839919
initialActions103112
loadScripts100390112057310471155
setupStore115539931
numNetworkReqs1367016860
BrowserifyPower User HomeuiStartup25921817362235228043255
load1154938168718011861509
domContentLoaded1153938168718011851509
domInteractive13132593125134476
firstPaint------
backgroundConnect17930913206198710
firstReactRender84391312097122
getState26172900250233858
initialActions3037528
loadScripts1119916164317611491476
setupStore1335752205118736
numNetworkReqs95632184097196
WebpackStandard HomeuiStartup------
load------
domContentLoaded------
domInteractive------
firstPaint------
backgroundConnect------
firstReactRender------
getState------
initialActions------
loadScripts------
setupStore------
numNetworkReqs------
WebpackPower User HomeuiStartup------
load------
domContentLoaded------
domInteractive------
firstPaint------
backgroundConnect------
firstReactRender------
getState------
initialActions------
loadScripts------
setupStore------
numNetworkReqs------
📊 Page Load Benchmark Results

Current Commit: fae3b64 | Date: 11/19/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±53ms) 🟡 | historical mean value: 1.05s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 734ms (±50ms) 🟢 | historical mean value: 730ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 79ms (±9ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 53ms 1.01s 1.35s 1.08s 1.35s
domContentLoaded 734ms 50ms 701ms 1.02s 759ms 1.02s
firstPaint 79ms 9ms 60ms 148ms 92ms 148ms
firstContentfulPaint 79ms 9ms 60ms 148ms 92ms 148ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 53 Bytes (0%)
  • ui: 658.87 KiB (9.43%)
  • common: 6.66 KiB (0.08%)

@MajorLift
Copy link
Contributor Author

@metamaskbot update-policies

@MajorLift MajorLift changed the title build: Enable React Compiler build: Enable React Compiler for Browserify (Babel), ESLint Nov 20, 2025
@metamaskbot
Copy link
Collaborator

Policies updated.
👀 Please review the diff for suspicious new powers.

🧠 Learn how: https://lavamoat.github.io/guides/policy-diff/#what-to-look-for-when-reviewing-a-policy-diff

@metamaskbot
Copy link
Collaborator

Builds ready [9ed8bca]
UI Startup Metrics (1245 ± 92 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1245105814549213001415
load106691112698611211218
domContentLoaded106090712638511161210
domInteractive2414101162271
firstPaint59088128543510911226
backgroundConnect21519925910222233
firstReactRender311960103654
getState321884103652
initialActions104112
loadScripts851710105784916987
setupStore1163141122
numNetworkReqs1257720572
BrowserifyPower User HomeuiStartup18771552258327020662448
load998874158316010181455
domContentLoaded98386615711599951447
domInteractive34151593328136
firstPaint5428215923789141058
backgroundConnect22020027012226244
firstReactRender76431191585104
getState17712734143197253
initialActions104112
loadScripts78066813681567921236
setupStore19960102536
numNetworkReqs1526929953186261
WebpackStandard HomeuiStartup813703109586880967
load59053382358595744
domContentLoaded58552781857591738
domInteractive2313100181871
firstPaint24180727163216581
backgroundConnect1153161227
firstReactRender3020122143238
getState291275113749
initialActions103111
loadScripts58252580856588730
setupStore1264151422
numNetworkReqs1257720573
WebpackPower User HomeuiStartup14471172238123116061921
load6705841344128678982
domContentLoaded6605751331127655974
domInteractive36172193828137
firstPaint28785912183387622
backgroundConnect1574871927
firstReactRender8147100118897
getState15612227733167243
initialActions102012
loadScripts6575731322125653965
setupStore24962153656
numNetworkReqs1607033960209284
FirefoxBrowserifyStandard HomeuiStartup12041067171812212451454
load101792312736910631163
domContentLoaded101692212726910621162
domInteractive51301492658110
firstPaint------
backgroundConnect3621204253773
firstReactRender22174862137
getState1157011920
initialActions103112
loadScripts99490611856010361109
setupStore136188241031
numNetworkReqs1257417761
BrowserifyPower User HomeuiStartup26061803361937928373415
load1182917162317212561549
domContentLoaded1181912162217112561549
domInteractive15032652139168500
firstPaint------
backgroundConnect177211037214186734
firstReactRender83481371890118
getState26086883254235846
initialActions318237
loadScripts1144904158316612091526
setupStore1206799184121759
numNetworkReqs96552254293210
WebpackStandard HomeuiStartup14141247267817914451701
load12071074250515812511398
domContentLoaded12061074250415812511398
domInteractive50262003176107
firstPaint------
backgroundConnect4321207284292
firstReactRender26196972735
getState116115121126
initialActions102012
loadScripts11801059248615212281331
setupStore125158171033
numNetworkReqs1256717663
WebpackPower User HomeuiStartup29582222402734831283689
load14431140201820515841844
domContentLoaded14421140201720415841843
domInteractive14831567144160539
firstPaint------
backgroundConnect19624896204243698
firstReactRender89422132496136
getState29073916278306863
initialActions4162937
loadScripts14061124198620115301789
setupStore1347792206110748
numNetworkReqs996922341103211
📊 Page Load Benchmark Results

Current Commit: 9ed8bca | Date: 11/20/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±56ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 728ms (±53ms) 🟢 | historical mean value: 725ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 76ms (±12ms) 🟢 | historical mean value: 77ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 56ms 1.02s 1.36s 1.06s 1.36s
domContentLoaded 728ms 53ms 702ms 1.03s 737ms 1.03s
firstPaint 76ms 12ms 60ms 184ms 84ms 184ms
firstContentfulPaint 76ms 12ms 60ms 184ms 84ms 184ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 53 Bytes (0%)
  • ui: 657.93 KiB (9.42%)
  • common: 6.63 KiB (0.08%)

@metamaskbot
Copy link
Collaborator

Builds ready [8521341]
UI Startup Metrics (1169 ± 98 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup116999515249812231297
load100986512828910651124
domContentLoaded100285112788910591117
domInteractive211477121956
firstPaint69480129140110491116
backgroundConnect19417724610197211
firstReactRender28186093444
getState311671113750
initialActions107112
loadScripts815660109089866927
setupStore1162431219
numNetworkReqs1257720572
BrowserifyPower User HomeuiStartup19171541255826621582359
load1021879168417110331473
domContentLoaded1005874167216710151460
domInteractive37162104229160
firstPaint5998516114279471483
backgroundConnect22319927213231249
firstReactRender81451291689117
getState18112735047192299
initialActions107114
loadScripts79967714521648061242
setupStore19656102540
numNetworkReqs1507027350185252
WebpackStandard HomeuiStartup8547411137878981053
load63457795168640805
domContentLoaded62957194667636797
domInteractive251588172272
firstPaint226100701133223605
backgroundConnect1263881331
firstReactRender3221145163541
getState321574134061
initialActions103112
loadScripts62656993565633788
setupStore1364561524
numNetworkReqs1257620571
WebpackPower User HomeuiStartup14491066223523015891906
load67458212491306771028
domContentLoaded66457512411296601020
domInteractive36171923831142
firstPaint2781061041190283687
backgroundConnect1574071828
firstReactRender82501111290101
getState15412228431159234
initialActions104112
loadScripts66157312321276581009
setupStore231056123347
numNetworkReqs1557431159205284
FirefoxBrowserifyStandard HomeuiStartup13471151185213613881692
load113399613267911871287
domContentLoaded113299113267911871287
domInteractive64321583088132
firstPaint------
backgroundConnect45241682745103
firstReactRender25204552538
getState12699121020
initialActions103122
loadScripts110597712657011551231
setupStore156169231149
numNetworkReqs1256917663
BrowserifyPower User HomeuiStartup26391817401243627813610
load1155958164716411761606
domContentLoaded1154951164616411751605
domInteractive14930575133161504
firstPaint------
backgroundConnect223261158260224880
firstReactRender873617224102127
getState28186902254251871
initialActions218227
loadScripts1120936161615811301559
setupStore1518773218140755
numNetworkReqs97682033893192
WebpackStandard HomeuiStartup14701280205215314971796
load12481100157710712971471
domContentLoaded12481100156910612971470
domInteractive62281803682145
firstPaint------
backgroundConnect4322170264498
firstReactRender26217962731
getState11679101121
initialActions103122
loadScripts12221085152810012741422
setupStore156160201159
numNetworkReqs1256917664
WebpackPower User HomeuiStartup28281903372134830063553
load13651076203119314421761
domContentLoaded13651076203119314421761
domInteractive13329681136145498
firstPaint------
backgroundConnect16724754175208634
firstReactRender904021927103139
getState26986919262211886
initialActions516411343
loadScripts13241059188818213581735
setupStore1175787178115636
numNetworkReqs96632164293210
📊 Page Load Benchmark Results

Current Commit: 8521341 | Date: 11/20/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.03s (±76ms) 🟡 | historical mean value: 1.03s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 718ms (±74ms) 🟢 | historical mean value: 721ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 80ms (±54ms) 🟢 | historical mean value: 78ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.03s 76ms 1.00s 1.74s 1.05s 1.74s
domContentLoaded 718ms 74ms 694ms 1.41s 734ms 1.41s
firstPaint 80ms 54ms 60ms 616ms 84ms 616ms
firstContentfulPaint 80ms 54ms 60ms 616ms 84ms 616ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 53 Bytes (0%)
  • ui: 667.01 KiB (9.55%)
  • common: 38.28 KiB (0.44%)

@MajorLift MajorLift marked this pull request as ready for review November 20, 2025 12:52
@metamaskbot
Copy link
Collaborator

Builds ready [4c0ef78]
UI Startup Metrics (1256 ± 107 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup12561062160710713421447
load107791313809911551253
domContentLoaded107190813719811491237
domInteractive2514129182272
firstPaint52296125240610351196
backgroundConnect21820126011223240
firstReactRender30206693448
getState361882114356
initialActions105113
loadScripts8596881131959381004
setupStore1174451220
numNetworkReqs1257720573
BrowserifyPower User HomeuiStartup19801627266726321712587
load1052911165416110731545
domContentLoaded1035904161815810381534
domInteractive39182534235160
firstPaint56615716714039721303
backgroundConnect23521029415243261
firstReactRender80451251587115
getState19313042953221311
initialActions1011112
loadScripts81868813961588261303
setupStore22882123048
numNetworkReqs1457228349183244
WebpackStandard HomeuiStartup8517431124808921006
load62656789263635787
domContentLoaded62256288463630782
domInteractive2615176232184
firstPaint23586762152222621
backgroundConnect1164271030
firstReactRender3121174153439
getState301491123749
initialActions104112
loadScripts61956087560628771
setupStore1252841419
numNetworkReqs1257720571
WebpackPower User HomeuiStartup14551193209322215712008
load68259010771206941005
domContentLoaded6725851068119679994
domInteractive39171784032149
firstPaint276901004199287674
backgroundConnect1573961928
firstReactRender82431161391100
getState15512126428162211
initialActions104113
loadScripts6695831059117677985
setupStore24970143447
numNetworkReqs1567446360189300
FirefoxBrowserifyStandard HomeuiStartup12441084164513112841528
load105893813308611031218
domContentLoaded105793213308611021218
domInteractive60312143883150
firstPaint------
backgroundConnect4223136224585
firstReactRender22183542333
getState115699922
initialActions102012
loadScripts103292213007910761181
setupStore105648921
numNetworkReqs1256917666
BrowserifyPower User HomeuiStartup27091886367936529113494
load1208983168717413041561
domContentLoaded1207982168617413041561
domInteractive14934749137154462
firstPaint------
backgroundConnect22824879235333752
firstReactRender87391552095121
getState26987912256232864
initialActions207123
loadScripts1150964167016311771514
setupStore108777016799597
numNetworkReqs100642224292202
WebpackStandard HomeuiStartup14041275185211314501679
load1198107615809512461406
domContentLoaded1198107615799412461406
domInteractive51261693165121
firstPaint------
backgroundConnect4019238274298
firstReactRender26194052938
getState1164671126
initialActions103122
loadScripts1173106213938212241351
setupStore145106161262
numNetworkReqs1156815655
WebpackPower User HomeuiStartup28792023372434630783531
load13971101200420115551796
domContentLoaded13971101200420115551796
domInteractive14128620140149534
firstPaint------
backgroundConnect16727889183191664
firstReactRender87482242494128
getState26272962260207844
initialActions4150838
loadScripts13601086197219514711756
setupStore95676115192487
numNetworkReqs1036324445112214
📊 Page Load Benchmark Results

Current Commit: 4c0ef78 | Date: 11/20/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±61ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 742ms (±60ms) 🟢 | historical mean value: 723ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 79ms (±11ms) 🟢 | historical mean value: 78ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 61ms 1.02s 1.33s 1.26s 1.33s
domContentLoaded 742ms 60ms 707ms 1.01s 936ms 1.01s
firstPaint 79ms 11ms 60ms 172ms 88ms 172ms
firstContentfulPaint 79ms 11ms 60ms 172ms 88ms 172ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 1.21 KiB (0.03%)
  • ui: 667.56 KiB (9.56%)
  • common: 38.44 KiB (0.44%)

@MajorLift MajorLift force-pushed the jongsun/build/251103-enable-react-compiler branch from 4c0ef78 to 1b20e16 Compare November 20, 2025 15:05
@MajorLift MajorLift changed the title build: Enable React Compiler for Browserify (Babel), ESLint build: Enable React Compiler for Browserify builds, fix react-compiler/react-compiler ESLint rule violations Nov 20, 2025
@metamaskbot
Copy link
Collaborator

Builds ready [249d0ea]
UI Startup Metrics (1245 ± 97 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard HomeuiStartup1245106017049713181364
load107192414778811401186
domContentLoaded106591914678711321175
domInteractive2414113182071
firstPaint51493147941910491182
backgroundConnect2152002398221228
firstReactRender29195283444
getState341865104053
initialActions105113
loadScripts856715125587923971
setupStore1162641320
numNetworkReqs1257320571
BrowserifyPower User HomeuiStartup18591550291226920682310
load1002869192516910171421
domContentLoaded98786419091669951404
domInteractive35161903729150
firstPaint5999319264249441418
backgroundConnect22120326312229243
firstReactRender77421331482102
getState18012734453203294
initialActions104112
loadScripts78366517061677951208
setupStore1995192634
numNetworkReqs986919231109185
WebpackStandard HomeuiStartup8647551229929131029
load62957386264635806
domContentLoaded62456985664630801
domInteractive251594192179
firstPaint26474823191265661
backgroundConnect1253381330
firstReactRender3222249233539
getState301464113747
initialActions104112
loadScripts62156784762628792
setupStore156351341420
numNetworkReqs1257720569
WebpackPower User HomeuiStartup14371080248624015881898
load67157913711356871008
domContentLoaded6605711363134667995
domInteractive40172784635160
firstPaint279871028208288631
backgroundConnect1473261826
firstReactRender8248117128998
getState15612527231164224
initialActions104112
loadScripts6585691355132665986
setupStore25972153555
numNetworkReqs1577429954197283
FirefoxBrowserifyStandard HomeuiStartup12431065155610913131488
load105491912197411071205
domContentLoaded105391912197411071200
domInteractive57301502882119
firstPaint------
backgroundConnect3820166263891
firstReactRender23176072336
getState95314919
initialActions103012
loadScripts103390312047110821180
setupStore116769926
numNetworkReqs1256717663
BrowserifyPower User HomeuiStartup26251887373034628003368
load1157976161216111801511
domContentLoaded1156971161216211801510
domInteractive13935520122144485
firstPaint------
backgroundConnect19328950199228709
firstReactRender85381622095123
getState24387901240189862
initialActions2124327
loadScripts1101934154614210991472
setupStore1556782217149759
numNetworkReqs95552254393209
WebpackStandard HomeuiStartup15531384202812915931843
load1323115015779513901514
domContentLoaded1322115015769513901514
domInteractive71291673398128
firstPaint------
backgroundConnect49241342749125
firstReactRender29237683041
getState1366181431
initialActions103122
loadScripts1294113215508813611436
setupStore157168201439
numNetworkReqs1256517664
WebpackPower User HomeuiStartup30572273395833132823646
load15251239201920416701927
domContentLoaded15251238201920416701927
domInteractive15035630131160472
firstPaint------
backgroundConnect248311067249317819
firstReactRender954422129103171
getState29171964280318872
initialActions51841238
loadScripts14721218195619616071869
setupStore1197828179111714
numNetworkReqs966121137103196
📊 Page Load Benchmark Results

Current Commit: 249d0ea | Date: 11/20/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±40ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 737ms (±37ms) 🟢 | historical mean value: 722ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 79ms (±13ms) 🟢 | historical mean value: 78ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 40ms 1.03s 1.35s 1.09s 1.35s
domContentLoaded 737ms 37ms 711ms 1.01s 762ms 1.01s
firstPaint 79ms 13ms 64ms 196ms 88ms 196ms
firstContentfulPaint 79ms 13ms 64ms 196ms 88ms 196ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 53 Bytes (0%)
  • ui: 666.87 KiB (9.54%)
  • common: 38.26 KiB (0.44%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-qa Label will automate into QA workspace size-XL team-extension-platform Extension Platform team

Projects

Status: Needs dev review

Development

Successfully merging this pull request may close these issues.

5 participants